#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
  //while(1)
  //{
  //  printf("I am a process...PID: %d,PPID: %d\n",getpid(),getppid());
  //  sleep(1);
  //}
  //# 
  // printf("I am running...\n");
  // fork();
  // while(1)
  // {
  //   
  //   printf("I am a process...PID: %d,PPID: %d\n",getpid(),getppid());
  //   sleep(1);
  // }
  // #
  // printf("I am running ...\n");
  // pid_t id = fork();
  // if(id==0)//child
  // {
  //   while(1)
  //   {
  //     printf("I am child process...\n");
  //     sleep(1);
  //   }
  // }
  // else if(id>0)//parent
  // {
  //   while(1)
  //   {
  //     printf("I am parent process...\n");
  //     sleep(1);
  //   }
  // }
  // 僵尸进程demo 
  //  printf("I am running...\n");
  //  pid_t id = fork();
  //  if(id==0)
  //  {
  //    int count = 5;
  //    while(count--)
  //    {
  //      printf("I am child...PID:%d,PPID:%d\n",getpid(),getppid());
  //      sleep(1);
  //    }
  //    printf("child quit!!\n");
  //    exit(1);
  //  }
  //
  //  else if(id>0)
  //  {
  //    while(1)
  //    {
  //      printf("I am father...PID:%d,PPID:%d\n",getpid(),getppid());
  //      sleep(1);
  //    }
  //  }
  //  else 
  //  {
  //    //fork error
  //  }
  //
  //孤儿进程（父进程提前退出）
  printf("I am running...\n");
  pid_t id = fork();
  if(id>0)
  {
    int count = 5;
    while(count--)
    {
      printf("I am father...PID:%d,PPID:%d\n",getpid(),getppid());
      sleep(1);
    }
    printf("father quit!!\n");
    exit(1);
  }

  else if(id==0)
  {
    while(1)
    {
      printf("I am child...PID:%d,PPID:%d\n",getpid(),getppid());
      sleep(1);
    }
  }
  else 
  {
    //fork error
  }
  return 0;
}
